package com.gitee.shigen.oss.config;

import java.io.Serializable;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * 云存储配置信息
 *
 * @author shigenfu
 */
@Configuration
@ConfigurationProperties(prefix = "oss")
@Data
public class CloudStorageConfig implements Serializable {

    private static final long serialVersionUID = 1L;
    /**
     * 类型 1：七牛  2：阿里云  3：腾讯云
     */
    private Integer type;
    /**
     * 七牛
     */
    private QiNiuProperties qiniu = new QiNiuProperties();
    /**
     * 阿里云
     */
    private AliyunProperties aliyun = new AliyunProperties();
    /**
     * 腾讯云
     */
    private QcloudProperties qcloud = new QcloudProperties();

    /**
     * MINIO
     */
    private MinioProperties minio = new MinioProperties();

    @Data
    public static class QiNiuProperties {

        /**
         * 七牛绑定的域名
         */
        private String domain;
        /**
         * 七牛路径前缀
         */
        private String prefix;
        /**
         * 七牛ACCESS_KEY
         */
        private String accessKey;
        /**
         * 七牛SECRET_KEY
         */
        private String secretKey;
        /**
         * 七牛存储空间名
         **/
        private String bucketName;
    }

    @Data
    public static class AliyunProperties {

        /**
         * 阿里云绑定的域名
         */
        private String domain;
        /**
         * 阿里云路径前缀
         */
        private String prefix;
        /**
         * 阿里云EndPoint
         */
        private String endPoint;
        /**
         * 阿里云AccessKeyId
         */
        private String accessKeyId;
        /**
         * 阿里云AccessKeySecret
         */
        private String accessKeySecret;
        /**
         * 阿里云BucketName
         */
        private String bucketName;
    }

    @Data
    public static class QcloudProperties {


        /**
         * 腾讯云绑定的域名
         */
        private String domain;
        /**
         * 腾讯云路径前缀
         */
        private String prefix;
        /**
         * 腾讯云AppId
         */
        private Integer appId;
        /**
         * 腾讯云SecretId
         */
        private String secretId;
        /**
         * 腾讯云SecretKey
         */
        private String secretKey;
        /**
         * 腾讯云BucketName
         */
        private String bucketName;
        /**
         * 设置bucket所在的区域，ap-shanghai，ap-beijing，ap-guangzhou，ap-beijing，ap-chengdu，ap-chongqing
         */
        private String region;

    }

    @Data
    public static class MinioProperties {

        /**
         * Minio的endpoint
         */
        private String endpoint;
        /**
         * Minio的accessKey
         */
        private String accessKey;
        /**
         * Minio的secretKey
         */
        private String secretKey;
        /**
         * Minio的bucketName
         */
        private String bucketName;
    }
}
